package cbm.seguridad.controller;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.ModelAndView;

import cbm.commons.BaseController;
import cbm.commons.ConstantsWeb;
import cbm.commons.RequestHelper;
import cbm.commons.ResultadoOperacionBean;
import cbm.commons.SessionContainer;
import ejb.cbm.commons.StackTrace2String;
import ejb.cbm.seguridad.bean.RegistroIngresoBean;
import ejb.cbm.seguridad.bean.UsuarioBean;
import ejb.cbm.seguridad.local.RegistroIngresoFacadeLocal;

public class DatosIngresoController extends BaseController{
	
	public RegistroIngresoFacadeLocal registroIngresoFacadeLocal;

	public ModelAndView confirmarOficina(HttpServletRequest request, HttpServletResponse response){
		return new ModelAndView();
	}

	public ModelAndView open(HttpServletRequest request, HttpServletResponse response){
		String pagSiguiente = resources.getString("registro_ingreso");
		HttpSession session = request.getSession(false);
		ResultadoOperacionBean resultado = new ResultadoOperacionBean(ConstantsWeb.EXITO,"",ConstantsWeb.MSGEXITO);		
		SessionContainer sessionContainer = (SessionContainer)session.getAttribute(ConstantsWeb.SESSION_CONTAINER);
		UsuarioBean usuarioLogeado = (UsuarioBean)sessionContainer.getSessionElement(ConstantsWeb.USUARIO);
		RegistroIngresoBean registroIngresoBean = (RegistroIngresoBean)sessionContainer.getSessionElement(ConstantsWeb.REGISTRO_INGRESO);
		Context context = null;
		
		try{
			
			registroIngresoBean = new RegistroIngresoBean();
			registroIngresoBean.setNumeroregistro(registroIngresoBean.getNumeroregistro());
			context = new InitialContext();
			registroIngresoFacadeLocal=(RegistroIngresoFacadeLocal)context.lookup("CBM/RegistroIngresoFacade/local");
			registroIngresoBean = (RegistroIngresoBean)registroIngresoFacadeLocal.buscar(registroIngresoBean);
			
		}catch(RuntimeException e){
			resultado.setResultado(ConstantsWeb.ERROR);
			resultado.setTitulo("Error");
			resultado.setMensaje(ConstantsWeb.MSGERROR);
			resultado.setTrace(StackTrace2String.stackTraceToString(e));
		}catch(NamingException e){
			resultado.setResultado(ConstantsWeb.ERROR);
			resultado.setTitulo("Error");
			resultado.setMensaje(ConstantsWeb.MSGERROR);
			resultado.setTrace(StackTrace2String.stackTraceToString(e));
		}
		
		return new ModelAndView(pagSiguiente);
	}

	public ModelAndView save(HttpServletRequest request, HttpServletResponse response){
		HttpSession session = request.getSession(false);
		//String paginaSig = resources.getString("ajaxrequest");
		String paginaSig = resources.getString("registro_ingreso");
		ResultadoOperacionBean resultado = new ResultadoOperacionBean(ConstantsWeb.EXITO,"",ConstantsWeb.MSGEXITO);		
		SessionContainer sessionContainer = (SessionContainer)session.getAttribute(ConstantsWeb.SESSION_CONTAINER);
		UsuarioBean usuarioLogeado = (UsuarioBean)sessionContainer.getSessionElement(ConstantsWeb.USUARIO);
		RegistroIngresoBean registroIngresoSession = (RegistroIngresoBean)sessionContainer.getSessionElement(ConstantsWeb.REGISTRO_INGRESO);
		Context context = null;
		
		try{
			Long numeroRegistro = RequestHelper.getParameterLong(request, "hidNumeroRegistro");
			String oficina = RequestHelper.getParameterString(request, "txtOficina");
			String terminal = RequestHelper.getParameterString(request, "txtTerminal");
			
			RegistroIngresoBean registroIngresoBean = new RegistroIngresoBean();
			registroIngresoBean.setNumeroregistro(numeroRegistro);
			registroIngresoBean.setCodigoterminal(terminal);
			registroIngresoBean.setCodigooficina(oficina);
			
			context = new InitialContext();
			registroIngresoFacadeLocal=(RegistroIngresoFacadeLocal)context.lookup("CBM/RegistroIngresoFacade/local");
			registroIngresoFacadeLocal.save(registroIngresoBean,usuarioLogeado);
			
			//Se modifica la informacion del registro en sesion
			registroIngresoSession.setCodigooficina(registroIngresoBean.getCodigooficina());
			registroIngresoSession.setCodigoterminal(registroIngresoBean.getCodigoterminal());
			
		}catch(RuntimeException e){
			resultado.setResultado(ConstantsWeb.ERROR);
			resultado.setTitulo("Error");
			resultado.setMensaje(ConstantsWeb.MSGERROR);
			resultado.setTrace(StackTrace2String.stackTraceToString(e));
		}catch(NamingException e){
			resultado.setResultado(ConstantsWeb.ERROR);
			resultado.setTitulo("Error");
			resultado.setMensaje(ConstantsWeb.MSGERROR);
			resultado.setTrace(StackTrace2String.stackTraceToString(e));
		}
		
		sessionContainer.addTemporal(ConstantsWeb.RESULTADO_OPERACION, resultado);
		
		return new ModelAndView(paginaSig,"responseText",resultado.getAsArrayJS());
	}
}
